#pragma once

namespace outline {

//general declaration for small int types
template <typename T>
struct type_traits { 
	typedef int accumulator_type; ///< type for storing of sums, etc.
	typedef float real_type; ///< type for storing position of approximating contour's points
};

template <>
struct type_traits<int> { 
	typedef long long int accumulator_type;
	typedef float real_type;
};

template <>
struct type_traits<float> { 
	typedef double accumulator_type;
	typedef float real_type;
};

template <>
struct type_traits<double> { 
	typedef double accumulator_type;
	typedef double real_type;
};

} //namespace outline
